//============================================================================
// Nome        : DataCal.cpp
// Autores     : Grupo 12 da turma 2MIEIC4
//	 		     Luis Carlos Calado Lameirão Goncalves (050509043)
//		         Paula Francisca Ferreira Teixeira (090509139)
//			     Paulo Jorge de Faria dos Reis (080509037)
// Versão      : 1.0
// Data        : Novembro de 2009
// Copyright   : Creative Commons 2.0
// Descrição   : CAL 2011 - TG1
//               Tema 12 - Transporte de pacientes de uma clínica de saúde.
// Nota        : Código reutilizado de trabalho anterior.
//============================================================================

#include"DataCal.h"
#include <iostream>


DataCal::DataCal(int d, int m, int a)
{
	dia = d;
	mes = m;
	ano = a;
}

DataCal :: DataCal(){}

DataCal :: DataCal(string linha)
{
	vector<string> resultados;
	separador(linha, resultados, "-");
    dia = stringParaInteiro(resultados[0]);
    mes = stringParaInteiro(resultados[1]);
    ano = stringParaInteiro(resultados[2]);
}

DataCal :: ~DataCal(){}

void DataCal :: setDia(int d)
{
	if (d >= 1 && d <= 31) dia = d;
	else dia = 1;
}

void DataCal ::setMes(int m)
{
	if (m >= 1 && m <= 12) mes = m;
	else mes = 1;
}

void DataCal ::setAno(int a)
{
	if (a >= 1900 && a <= 2100) ano = a;
	else ano = 2009;
}

int DataCal :: getDia()    { return dia; }

int DataCal :: getMes()    { return mes; }

int DataCal :: getAno()    { return ano; }

string DataCal::getData()
{
	return (intToString(dia) + "-" + intToString(mes) + "-" + intToString(ano));
}

bool DataCal :: operator ==(DataCal &b)
{
    return (dia == b.getDia() && mes==b.getMes() && ano==b.getAno());
}

bool DataCal :: operator < (DataCal &b)
{
	if(ano < b.getAno()) return false;
	if(mes < b.getMes()) return false;
	if(dia < b.getDia()) return false;
	return true;
}

bool DataCal :: operator <= (DataCal &b)
{
	if(ano <= b.getAno()) return false;
	if(mes <= b.getMes()) return false;
	if(dia <= b.getDia()) return false;
	return true;
}

bool DataCal :: operator > (DataCal &b)
{
	if(ano > b.getAno()) return false;
	if(mes > b.getMes()) return false;
	if(dia > b.getDia()) return false;
	return true;
}

bool DataCal :: operator >= (DataCal &b)
{
	if(ano >= b.getAno()) return false;
	if(mes >= b.getMes()) return false;
	if(dia >= b.getDia()) return false;
	return true;
}

DataCal DataCal :: operator =(string linha)
{
	int a, d, m;
	vector<string> resultados;
	separador(linha, resultados, "-");
    d = stringParaInteiro(resultados[0]);
    m = stringParaInteiro(resultados[1]);
    a = stringParaInteiro(resultados[2]);
	return DataCal(d, m, a);
}
